package com.dodayum.java8.thread;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;

public class ThreadPoolDemo {
    static int num = 0;

    public static void main(String[] args) throws InterruptedException {
        List<String> a = new ArrayList<>();
        for (int i = 0; i < 1000; i++) {
            a.add(i + "demo");
        }

        Map<Integer, String> b = new ConcurrentHashMap<>();
//        Future<?> submit = new ThreadPoolUtil().getThreadPoolExecutor().submit(
//                new Runnable() {
//                    @Override
//                    public void run() {
//                        a.forEach(c -> {
//                            num+=1;
//                            b.put(num, c);
//                        });
//                    }
//                }
//        );
        new ThreadPoolUtil().getThreadPoolExecutor().execute(
                new Runnable() {
                    @Override
                    public void run() {
                        a.forEach(c -> {
                            num += 1;
                            b.put(num, c);
                        });
                    }
                }
        );

        // 下面这个东西是为了实现同步，如果去掉就是异步的
//        for (; ; ) {
//            Thread.sleep(100); // 正常不会这么做，这么做的原因是因为主线程速度太快了
//            if (num == 1000) {
//                System.out.println("都执行完了");
//                b.forEach((k,v) -> System.out.println(k+":\t"+v));
//                return;
//            }
//        }
        while (true) {
            if (num == 1000) {
                System.out.println("都执行完了");
                b.forEach((k, v) -> System.out.println(k + ":\t" + v));
                break;
            }
        }
    }

}
